A continuing problem facing computer designers is the need to minimize the cost of computer memory without increasing the access time required to locate desired data. Memory devices from which computer programs derive direct data are sometimes called main or primary memories, and as such must be capable of providing data in the smallest usable increments, called words. Secondary memory storage devices, such as magnetic drums, disks or tapes, can store large quantities of data but usually provide data to the primary memory and only in blocks or sectors containing a plurality of words. The main or primary memory devices are considerably more expensive than the secondary memory devices on a cost per word stored basis. However, when the size of the primary memory is decreased and more secondary memory is utilized for data storage, the time required for utilization of the requested word increases due to transfer of the data from secondary memory to primary memory, thus requiring more computer time to perform a given calculation.
In an attempt to minimize the cost of the primary memory by reducing its capacity while at the same time maintaining high speed computational capability, computer designers have developed elaborate paging and segmentation systems which attempt to divide a program into sections so that only certain parts of the stored data are required to be in the primary memory at any given time. In the segmentation approach, expensive mapping hardware and/or system software are required to transfer segments of data between primary memory and secondary memory and to keep track of the segment location and its usage. Often a large part of primary memory is required just to manage the transfer of the data segments. Paging is similar to segmentation except that the data segment sizes are always the same. Again, considerable software and hardware are required to store and manipulate the page directories. Further, relatively large main memories are still required with these memory management schemes.
This invention eliminates the high cost associated with the conventional approaches to memory management outlined above. The cost of primary memory is reduced by providing means for programs to execute directly out of secondary memory with the aid of a relatively small primary memory and associated circuitry. The manner in which the secondary memory is utilized and controlled eliminates the need for elaborate paging or segmentation systems and their attendant high hardware and software costs. This invention allows the above economies to be effected without any changes in the program which is being executed and with substantially the same speed of execution. Thus, the primary and secondary memory combination of this invention functions substantially as one large, primary memory as far as the computer program being executed is concerned, but at much less cost.